Software applications and other software products may arrive at deployment at the end of a complex process. The many individual software components that make up an application may originate from different sources and may have been created using various methods. Components may have originally been created for different applications. Different types of testing may be performed on different portions of an application, with inconsistencies between the testing methods and standards. Isolating and identifying a component of software code that is failing, underperforming, or functioning not as intended may involve systematically removing and analyzing multiple layers of code. Reproducing and observing the problematic code behavior in a laboratory environment is often a necessary step in the problem determination process. Understanding and correcting aberrant software behavior may be facilitated when a documented development history is available that provides the methodology and rationale of the code's genesis and progression, including a history of problems encountered at earlier points in an application's history and resolution steps taken at those stages.